package com.mxchip.livestar.base

import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable

class AutoDisposableLifecycleAware : LifecycleObserver {

    private val compositeDisposable: CompositeDisposable by lazy {
        CompositeDisposable()
    }

    fun add(disposable: Disposable) {
        compositeDisposable.add(disposable)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy() {
        compositeDisposable.dispose()
    }
}

fun Disposable.addTo(autoDisposable: AutoDisposableLifecycleAware) {
    autoDisposable.add(this)
}